دسته بندی ها
00:08 1398/11/21

حلقه foreach بهتر است یا for loop

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : Vb.Net سی شارپ WPF یونیتی

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 4271
پاسخ دهنده : Sowgandi 08:22 1398/11/21

سلام. 
مسلما حلقه for سرعت بیشتری نسبت به foreach داره. و اگر در شرایط مساوی قرار گرفتید حتما از for استفاده کنید. اما سرعت زمانی خودشو نشون میده که تعداد آرایه یا چرخش حلقه خیلی زیاد بشه و در تعداد لوپ پایین سرعت خودشو زیاد نشون نمیده و میشه گفت سرعتشون تقریبا برابره! (اما به طور کلی سرعت for بیشتر از foreach است)

لینک زیر رو هم مطالعه کنید بد نیست. 

تفاوت حلقه های for و foreach در سی شارپ

ویرایش شده در دوشنبه 21 بهمن 1398 ساعت 08:31:41
به این پاسخ امتیاز بدهید    0
امتیاز: 871 رتبه: 3
پاسخ دهنده : fateme 15:30 1398/11/21

حلقه foreach کندتر از حلقه for loop هست.

اما چرا foreach کندتر است؟

اگر با آرایه هایی کار می کنید که ابعاد مشخصی دارند فرقی بین for-loop و for-each وجود ندارد. از آنجا که در پس زمینه کامپایلر سی شارپ بجای حلقه ی for-each حلقه ی for-loop جایگزین می کند. 

اما این تنها در صورتی است که آرایه را به IEnumerable تبدیل نکنید. کلاس IEnumerable برای پردازش آرایه از توابع Current و MoveNext استفاده می کند که در هر بار اجرای حلقه موقعیت جاری را چک می کند و شامل بک فرآیند try-catch هم میشود. این مسئله یک سربار روی حافظه و پردازش ایجاد می کند و منجر به کندتر شدن پردازش می شود. حتی اگر آرایه ابعاد ثابتی داشته باشد از آنجا که به IEnumerable تبدیل شده در پس زمینه قابل تبدیل به for-loop نیست. 

پس به طور کلی for-each کندتر از for-loop است. در مواردی که پرفورمنس حلقه اهمیت زیادی پیدا می کند بهتر است آن را با for-loop جایگزین کنید.

به این پاسخ امتیاز بدهید    0
امتیاز: 1617 رتبه: 2
پاسخ دهنده : Kpa91 14:58 1399/04/28

البته همیشه سرعت عامل تعیین کننده انتخاب نوع دستورات نیست کارایی فرامین هم مهمه مسلماً کارایی foreach بهتره و درصد خطای محاسباتی برنامه نویس رو هم پایین میاره به خصوص چایی که ممکنه تشخیص ندید دقیقا تعداد دفعات انجام عمل چند تاست

به این پاسخ امتیاز بدهید    0
امتیاز: 12 رتبه: 59
پاسخ دهنده : meysam2017 09:19 1399/07/26

سلام

نوع عملکرد این حلقه ها متفاوت هست و هرکدوم کارکرد خودشو داره

وقتی شما بخواید تمام آیتم های یه مجموعه رو چک کنید از foreach استفاده میکنید

اما for صرفا برای چک کردن نیست، میتونه تولید یه عدد ساده تو یه رنجی باشه

نمیشه گفت کدوم بهتره، هرکدوم برا کارکرد خودش خوبه

به این پاسخ امتیاز بدهید    0
امتیاز: 0 رتبه: 7020
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود